Книги-online
Ch 9.htm
назад
|
содержание
|
вперед
Запись в файл произвольного доступа
Для записи данных в файл произвольного
доступа используется оператор Put #, имеющий следующий синтаксис:
Put #fileNumber, [recNumber], varName
где:
-
fileNumber — номер файла, аналогичный
номеру в операторе open;
-
recNumber — целочисленное выражение,
которое задает номер записи в файле;
-
varName — переменная, указывающая
источник записываемых данных.
Этот оператор используется только
для файлов произвольного доступа и бинарных. Если номер записи не указан, то
по умолчанию принимается текущая позиция указателя записи.
Замечание
При использовании оператора Put
необходимо иметь в виду, что данные в записи с указанным в операторе номером
будут заменены на те, которые мы
записываем
в файл. Добавление записей выполняется при помощи этого же оператора, но с
некоторыми особенностями. Об этом речь пойдет в следующем разделе.
Рассмотрим небольшой пример. Воспользуемся
приложением
MyFileApp,
изменив его следующим образом:
1. Измените наименование кнопки
Выполнить на Запись.
2. Добавьте в форму еще одну кнопку
управления.
3. Присвойте созданной кнопке наименование
cbRead, используя свойство
Name.
4. В свойство Caption введите значение
Чтение.
5. Добавьте в приложение программный
модуль, воспользовавшись командой
Add Module
(Добавить модуль) из меню
Project
(Проект).
6. В код модуля введите текст описания
пользовательского типа данных:
Type Phis Face
PhisFaseID As Integer
FIO As String * 50
End Type
7. Откройте окно редактора кода
и замените находящийся там код на следующий:
Dim ForFileRecords As PhisFace
Dim nRecNo As Integer
Private Sub SaveRecord ()
Open "C:\FilePF.dat" For
Random As #1 Len = Len(ForFileRecords)
ForFileRecords.PhisFaseID = txtNumber.Text
ForFileRecords.FIO = txtFile.Text
Put #1, nRecNo, ForFileRecords
nRecNo = nRecNo + 1
Close #1
End Sub
Private Sub ReadRecord ()
Open "C:\FilePF.dat" For
Random As #1 Len = Len(ForFileRecords)
Get #1, nRecNo, ForFileRecords
txtNumber.Text
=
ForFileRecords.PhisFaseID
txtFile.Text = ForFileRecords.FIO
nRecNo = nRecNo + 1
Close #1
End Sub
Private Sub Form Load()
nRecNo = 1
End Sub
Private Sub cbStart_Click()
Call SaveRecord
End Sub
Private Sub cbRead_Click()
Call ReadRecord
End Sub
В тексте этого кода мы объявили
переменные ForFileRecords пользовательского типа для описания структуры файла
и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием
длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл
требуемой структуры.
8. Запустите приложение. При нажатии
кнопки
Запись
выполняется запись содержимого текстовых полей в файл созданной
структуры. При нажатии кнопки
Чтение
эти данные можно прочитать в текстовом
поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает
собственную процедуру выполнения действия.
назад
|
содержание
|
вперед